package com.heima.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.dtos.ArticleHomeDto;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.article.pojos.ApArticleConfig;
import com.heima.model.behavior.dtos.ArticleInfoDto;
import com.heima.model.behavior.dtos.CollectionBehaviorDto;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.mess.ArticleVisitStreamMess;
import com.heima.model.wemedia.dtos.WmFindNewsCommentDto;
import com.heima.model.wemedia.dtos.WmNewsPageDto;
import com.heima.model.wemedia.dtos.WmUpdateCommentStatusDto;
import com.heima.model.wemedia.vos.WmCommentVo;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;
import java.util.List;

public interface ApArticleService extends IService<ApArticle> {

    ResponseResult load(Short loadtype, ArticleHomeDto articleHomeDto);

    ResponseResult saveArticle(ArticleDto articleDto);

    ResponseResult collectionBehavior(CollectionBehaviorDto collectionBehaviorDto);

    ResponseResult loadArticleBehavior(ArticleInfoDto articleInfoDto);

    /**
     * 加载文章列表
     * @param dto
     * @param type  1 加载更多   2 加载最新
     * @param firstPage  true  是首页  flase 非首页
     * @return
     */
    public ResponseResult load2(ArticleHomeDto dto,Short type,boolean firstPage);

    /**
     * 更新文章的分值  同时更新缓存中的热点文章数据
     * @param mess
     */
    public void updateScore(ArticleVisitStreamMess mess);

    /**
     * 远程获取文章配置
     * @param id
     * @return
     */
    public ApArticleConfig getArticleConfig(Long id);

    /**
     * 远程获取文章评论管理列表
     * @param id
     * @return
     */
    PageResponseResult getCommentManageList(WmFindNewsCommentDto dto, Integer id);

    /**
     * 远程修改文章评论状态
     * @param dto
     * @return
     */
    ResponseResult updateCommentStatus(WmUpdateCommentStatusDto dto);

    /**
     * 获取作者所有文章
     * @param userId
     * @return
     */
    List<ApArticle> getAllArticle(Date beginDate,  Date endDate, Integer userId);

    /**
     * 图文展示 分页
     * @param dto
     * @param wmUserId
     * @return
     */
    ResponseResult getNewsPage(WmNewsPageDto dto ,Integer wmUserId);
}
